package com.iplatform.iplatformuser.privilege.service.inter;

import com.iplatform.commons.utils.CommResponse;
import com.iplatform.module.sys.SysDataBean;
import com.iplatform.module.sys.dto.SysDataTypeDto;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * Title: ISysDataService
 * Description:
 *
 * @author RayLLi
 * @date 2018年8月28日
 */
public interface ISysDataService {

    /**
     * Title: loadData
     * Description:
     *
     * @return
     */
    List<HashMap<String, String>> loadData();

    /**
     * Title: querySysData
     * Description:
     *
     * @param formMap
     * @return
     */
    List<HashMap<String, String>> querySysData(Map<String, String> formMap);

    /**
     * Title: insertSysData
     * Description:
     *
     * @return
     */
    int insertSysData(SysDataBean sysDataBean);

    /**
     * Title: updateSysData
     * Description:
     *
     * @param formMap
     * @return
     */
    int updateSysData(Map<String, String> formMap);

    /**
     * Title: deleteSysData
     * Description:
     *
     * @param id
     */
    void deleteSysData(String id);

    /**
     * Title: batchDeleteSysData
     * Description:
     *
     * @param ids
     */
    void batchDeleteSysData(List<String> ids);

    /**
     * Title: setReadOnlyStatus
     * Description:
     *
     * @param id
     */
    void setReadOnlyStatus(String id);

    /**
     * Title: queryCodeAndName
     * Description: 查询类型代码和类型名称
     *
     * @return
     */
    List<HashMap<String, String>> queryCodeAndName();

    /**
     * 根据类型查询字典表
     *
     * @param map
     * @return
     */
    public List<String> querySysDataByType(Map<String, String> map);

    /**
     * Title: loadData
     * Description:
     *
     * @return
     */
    List<HashMap<String, String>> loadSycDate();

    /**
     * 根据数据类型查询数据字典名列表
     *
     * @param typeCode
     * @return
     */
    List<SysDataTypeDto> querySysDataByTypeCode(String typeCode, String code, String codeName,String dataType);

    /**
     * 修改数据类型
     *
     * @param id
     */
    void setDataType(String id, String dataType);

    /**
     * 通过数据id查询数据状态
     *
     * @param id
     * @return
     */
    String findDataTypeByDataId(String id);

    /**
     * 查出所有的数据类型和名称
     *
     * @return
     */
    List<SysDataTypeDto> findTypeCodeAndTypeName(String typeName);

    /**
     * 判断某个数据类型的数据代码是否唯一
     *
     * @return
     */
    SysDataBean isCodeExist(String typeCode, String code, String id);

    /**
     * 数据类型批量修改
     * @param sysDataBean
     * @return
     */
    CommResponse updateType(SysDataBean sysDataBean);

    /**
     * 对数据的排序码进行处理
     * @param sysDataBean
     * @return
     */
    CommResponse updateData(SysDataBean sysDataBean);

    /**
     * 批量逻辑删除数据的类型
     * @param ids
     */
    void batchDeleteType(List<String> ids);

    /**
     * 数据字典判重
     * @param typeCode
     * @param code
     * @param id
     * @return
     */
    Integer checkData(@Param("typeCode") String typeCode, @Param("code") String code, @Param("id") String id);

    /**
     * 将数据存入Redis
     * @return
     */
    boolean DataToRedis();


    /**
     * 删除key
     * @param key 模糊的key值
     * @return
     */
    boolean delKeyRedis(String key);

}
